///////////////////////////////////////////////////////////////////////////////
// $Id$
//
// 3DimViewer
// Lightweight 3D DICOM viewer.
//
// Copyright 2008-2016 3Dim Laboratory s.r.o.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef CGraficCardDesc_H
#define CGraficCardDesc_H

#include <VPL/Base/Exception.h>

#include <string>


namespace vr
{

///////////////////////////////////////////////////////////////////////////////
//! Class provides unique info about the computer.

class CGraficCardDesc
{
public:
    //! Exception thrown from constructor.
    VPL_DECLARE_EXCEPTION(CInitFailed, "Cannot initialize the service")

    //! Exception thrown on failure.
    VPL_DECLARE_EXCEPTION(CSearchFailed, "Cannot obtain the computer info")

public:
    //! Default constructor.
    //! - Throws exception on failure.
    CGraficCardDesc();

    //! Destructor.
    ~CGraficCardDesc();

    //! Returns current state of the class.
    bool isError() { return (m_State != 0); }

    //! Returns size of the video RAM in MB.
    //! - Throws exception on failure.
    unsigned int getAdapterRAM();

    //! Returns name of the adapter.
    std::string getAdapterName();

protected:
    //! Internal state.
    int m_State;

    //! Cached adapter ram size
    unsigned int m_adapterRam;
    
    //! Was CoInitialize successfull?
    bool m_bNeedUnitialize;
};


} // namespace vr

#endif // CGraficCardDesc_H

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

